#ifndef __MY_SQL_DAO_BASE_H__
#define __MY_SQL_DAO_BASE_H__


#include <memory>
#include <string>
#include <vector>
#include <map>
#include <iostream>
#include "MySqlConPool.h"

class MysqlDaoBase 
{
public:
    MysqlDaoBase(std::shared_ptr<MySqlPool> pool) : _pool(std::move(pool)) {}

protected:
    // RAII获取连接
    MySqlPool::ConnectionGuard acquire() { return _pool->acquire(); }

    // 执行 INSERT/UPDATE/DELETE 语句，返回影响的行数
    int ExecUpdate(const std::string& sql);

    // 执行 SELECT 语句，返回结果集
    std::vector<std::map<std::string, std::string>> ExecQuery(const std::string& sql);

private:
    std::shared_ptr<MySqlPool> _pool;
};


#endif // !__MY_SQL_DAO_BASE_H__



/*
mysql_query 函数
用于执行 SQL 语句的函数。它的主要作用是将一个 SQL 语句发送到 MySQL 服务器执行。
该函数适用于执行任何类型的 SQL 语句，包括 SELECT、INSERT、UPDATE、DELETE 等。
mysql: 指向一个已经通过 mysql_real_connect 成功连接的 MYSQL 结构体的指针。
query: 要执行的 SQL 语句的字符串。
成功时返回 0。 失败时返回非零值，并且可以通过 mysql_error 函数获取错误信息。
int mysql_query(MYSQL *mysql, const char *query);

mysql_affected_rows 函数
函数用于获取最近一次由 INSERT、UPDATE 或 DELETE 语句影响的行数。这对于确定操作的成功与否以及影响的范围非常有用。
mysql: 指向一个已经通过 mysql_real_connect 成功连接的 MYSQL 结构体的指针。
如果语句未影响任何行，或者不是一个 INSERT、UPDATE 或 DELETE 语句，则可能返回 0。
my_ulonglong mysql_affected_rows(MYSQL *mysql);
*/